package com.jy.wms.dao;

import com.jy.wms.common.base.BaseDao;
import com.jy.wms.pojo.*;
import com.netflix.ribbon.proxy.annotation.ClientProperties;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

/**
   * @ClassName: WmsShipmentOrderMapper.java
   * @Description: TODO(这里用一句话描述这个类的作用)
   * @Author LH
   * @Date Wed Oct 18 11:12:06 GMT+08:00 2017
   */
   public interface WmsShipmentOrderMapper extends BaseDao<WmsShipmentOrder>{

   /**
    * 插入一条记录
    * @param
    * @return int
    */
    public Integer baseInsert(@Param("map")Map<String ,Object> map);

   /**
    * 插入一条记录（匹配有值的字段） 用
    * @param entity 实体对象
    * @return int
    */
   public Integer baseInsertSelective(@Param("WmsShipmentOrder") WmsShipmentOrder entity);

   /**
    * 删除（根据主键ID删除）
    * @param id 主键
    * @return int
    */
   public Integer baseDeleteByPrimaryKey(@Param("id") String id);

   /**
    * 删除（根据ID 批量删除）
    * @param idList 主键ID列表
    * @return int
    */
    public Integer baseDeleteBathPrimaryKeys(@Param("list") List<String> idList);


    /**
     * 分页查询
     * @param entity 实体
     * @return List<WmsShipmentOrder>
     */
    public List<WmsShipmentOrder>  baseSelectPage(@Param("WmsShipmentOrder") WmsShipmentOrder entity,@Param("ckid") String ckid,@Param("hzid") String hzid);
    /**
     * 欠货分页查询
     * @param entity 实体
     * @return List<WmsShipmentOrder>
     */
    public List<WmsShipmentOrder>  baseSelectPageQH(@Param("WmsShipmentOrder") WmsShipmentOrder entity,@Param("ckid") String ckid,@Param("hzid") String hzid);

    /**
    * 查询（根据主键ID查询）
    * @param id 主键ID
    * @return User    yong
    */
    public WmsShipmentOrder  baseSelectByPrimaryKey(@Param("id") String id);
       /**
        * 根据发运订单查询订单明细
        * @param ssfyddid 发运订单id
        *@param ssfyddid hzid 货主
        * @param ssfyddid ckid 仓库
        * @return
        */
       public List<WmsShipmentOrderDetailed>wmsShipmentOrderDetailedList(@Param("ssfyddid") String ssfyddid,@Param("hzid")String hzid,@Param("ckid")String ckid);

    /**
     * 根据发运订单查询订单明细
     * @param ids  发运订单ids
     * @param  hzid 货主
     * @param   ckid 仓库
     * @return
     */
    public List<WmsShipmentOrderDetailed>getDetailedListsByIds(@Param("list") List<String> ids,@Param("hzid")String hzid,@Param("ckid")String ckid);

    /**
    * 查询（根据ID 批量查询）
    * @param idList 主键ID列表
    * @return list
    */
    public Integer baseSelectBathPrimaryKeys(@Param("list") List<WmsShipmentOrder> idList);

   /**
    *修改 （匹配有值的字段）
    * @param entity 主键ID列表
    * @return int             yong
    */
    public Integer baseUpdateByPrimaryKeySelective(@Param("WmsShipmentOrder") WmsShipmentOrder entity);

   /**
    *修改（根据主键ID修改）
    * @param entity 主键ID列表
    * @return int
    */
    public Integer baseUpdateByPrimaryKey(@Param("WmsShipmentOrder") WmsShipmentOrder entity);

       /**
        * 获取客户信息
        * @param hzid 货主id
        * @return
        */
    public List<WmsCustomerFile> getCusInfo(@Param("hzid")String hzid,@Param("ckid") String ckid,@Param("bh") String khbh);

       /**
        * 获取货主下的货品
        * @param hzid 货主id
        * @return
        */
    public  List<WmsGoods>getGoodsByHzid(@Param("hzid") String hzid,@Param("ckid") String ckid,@Param("bh") String bh);

       /**
        * 获取货主下的库位
        * @param hzid
        * @param ckid
        * @return
        */
    public List<WmsLibraryPosition>getLiLibraryPosition(@Param("hzid") String hzid,@Param("ckid") String ckid,@Param("mc")String mc);

       /**
        * 获取库存
        * @param ckid
        * @return
        */
    public  List<WmsStock>getWmsStock(@Param("hpid")String hpid,@Param("ckid")String ckid,@Param("hppc")String hppc);
    public  List<WmsStock>getWmsStockScrq(@Param("hpid")String hpid,@Param("ckid")String ckid,@Param("scrq")String scrq);

       /**
        * 判断是都有重复的订单编号
        * @param hzid
        * @param fybh
        * @return
        */
    public Integer getCountByBh(@Param("hzid")String hzid,@Param("fybh")String fybh,@Param("ckid")String ckid);

       /**
        * 作废时修改是否有效的状态
        * @param idList 运单id
        * @return
        */
       public Integer updateSfyx(@Param("list") List<String> idList, @Param("zfr") String zfr);

       /**
        *  标记发运完成
        * @param bjr  标记人
        * @param bjyy 标记原因
        * @return
        */
       public Integer updateZt(@Param("list") List<String> idList,@Param("bjr") String bjr,@Param("bjyy") String bjyy);

       /**
        * 修改明细的状态（标记发运完成时）
        * @param ddidList 发运单id
        * @return
        */
       public Integer updateMxZt(@Param("list") List<String> ddidList);

       /**
        * 审核发运订单
        * @param idList 发运订单id
        * @return
        */
       public Integer updateShzt(@Param("list") List<String> idList,@Param("shr") String shr);

       /**
        * 客户类型为“仓库”，将在选择的仓库-此帐号货主下建立ASN订单
        * @return
        */
       public  Integer insert();



       /**
        * 获取发运订单的导入配置
        * @return
        */
       public WmsOwnerShipmentorderconfig getWmsShipmentOrderConfig (@Param("hzid") String hzid);

    /**
     * 通过客户名称查找客户对象
     * @param khbh 客户编号 （每个货主下的客户名称不会重复）
     * @param hzid
     * @return
     */
        public WmsCustomerFile getCustomerFile(@Param("khbh") String khbh,@Param("hzid") String hzid,@Param("ckid") String ckid);
    /**
     *  根据订单类型名称查找订单
     * @param ddlx 类型名称
     * @param ckid 仓库id
     * @return
     */
        public WmsOwnerOrdertype getWmsOwnerOrderType(@Param("ddlx") String ddlx,@Param("hzid") String hzid,@Param("ckid")String ckid );

    /**
     *  查询货品
     * @param bh 货品编号
     * @param ckid 仓库id
     * @return
     */
        public WmsGoods getGoods(@Param("bh") String bh,@Param("ckid") String ckid);

    /**
     * 获取选中的id的集合
     * @param idList
     * @return
     */
    public  List<WmsShipmentOrder> getOrderList(@Param("list") List<String> idList);
    /**
     * 从收发类别中获取类型为“出库”的单据类型
     * @return
     */
    public List<WmsOwnerOrdertype>getPoLx(@Param("hzid") String hzid,@Param("ckid") String ckid,@Param("ddlx") String ddlx);

    /**
     *  根据id查找客户对象
     * @param id 客户id
     * @return WmsCustomerFile
     */
    public  WmsCustomerFile getCusById(@Param("id") String id);

    /**
     * 获取字段对应的列名（发运主表）
     * @param hzid 货主id
     * @param ckid 仓库id
     * @return
     */
    public List<WmsColumnName> getFyColumnName(@Param("hzid") String hzid,@Param("ckid") String ckid);

    /**
     * 获取字段对应的列名（发运明细）
     * @param hzid 货主id
     * @param ckid 仓库id
     * @return
     */
    public List<WmsColumnName> getFymxColumnName(@Param("hzid")String hzid,@Param("ckid")String ckid);

    /**
     *  根据列名查找该列对应的字典
     * @param zcloumn 列名
     * @return
     */
    public List<WmsCustomDictionary> getDictionary(@Param("zcolumn") String zcloumn,@Param("hzid")String hzid,@Param("ckid")String ckid);

    /**
     * 根据货品id 查询货品库存
     * @param hpid 货品id
     * @return
     */
    public  List<WmsStock> getGoodsStock(@Param("hpid") String hpid,@Param("ckid") String ckid);

    /**
     * 发运订单状态为 全部发运和部分发运状态 的 出库订单数量（查询昨日或今日）
     * @param sj  时间
     * @return
     */
    public Integer getDdsl(@Param("sj") String sj,@Param("ckid") String ckid);

    /**
     * 查询库存余量
     * @param ddid 发运订单id
     * @return
     */
    public List<WmsShipmentOrderDetailed> getStockYl(@Param("ddid") String ddid,@Param("page") Integer page,@Param("rows") Integer rows);

    /**
     * 查询库存余量条数
     * @param ddid 发运订单id
     * @return
     */
    public int getStockYlSl(@Param("ddid") String ddid);

    /**
     * 修改发运订单的复制次数
     * @param num 复制次数
     * @param id 发运订单id
     * @return
     */
    public  int updateNum(@Param("num") Integer num,@Param("id") String id);


    /**
     * 修改借货完结状态
     * @param id 发运订单id
     * @return
     */
    public  int updateJhwjzt(@Param("id") String id);

    /**
     *   根据地址（省，市）查询线路
     * @param sheng 省
     * @param shi 市
     * @return
     */
    public List<WmsLineDetailed> getWmsLineDetailed(@Param("sheng")String sheng,@Param("shi")String shi);

    /**
     * 查询货品包含的配件货品
     * @param sshpid 所属货品id
     * @return
     */
    public List<WmsGoods> getGoodAccessories(@Param("sshpid")String sshpid);


    /**
     *  根据名称和编码查询订单渠道
     * @param hzid 货主id
     * @param ckid 仓库id
     * @param mc 名称
     * @param code 编码
     * @return
     */
    public WmsOrderChannel getOrderChannel(@Param("hzid")String hzid,@Param("ckid")String ckid,@Param("mc")String mc,@Param("code")String code);




}

